package com.example.txl;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import java.util.Comparator;
import java.util.List;

import com.example.txl.activity.AddActivity;
import com.example.txl.activity.DetailsActivity;
import com.example.txl.activity.UpdateActivity;
import com.example.txl.adapter.PeoAdapter;
import com.example.txl.bean.PeoBean;
import com.example.txl.dao.PeoDao;
import com.example.txl.until.DBUntil;

//MainActivity类，继承自AppCompatActivity，是Android应用中的一个主要活动（界面）类
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取ID 获取Toolbar的ID并设置为活动的支持ActionBar
        Toolbar toolbar = (Toolbar)this.findViewById(R.id.toolbar);
        this.setSupportActionBar(toolbar);
        // 调用数据库 创建DBUntil对象，用于操作数据库，并获取可写数据库实例
        DBUntil dbUntil = new DBUntil(MainActivity.this);
        dbUntil.db = dbUntil.getWritableDatabase();
        // 加载列表 联系人列表
        List<PeoBean> result = PeoDao.getAllPeo();
        ListView listView = findViewById(R.id.book_list);
        if(result.size()==0){
            listView.setAdapter(null);
        }else {
            // 字母排序
            result.sort(new Comparator<PeoBean>() {
                @Override
                public int compare(PeoBean peoBean, PeoBean t1) {
                    // 如果其中一个联系人的首字母为'#'或者另一个为'#'，则将前者排在后面（返回1）
                    if(peoBean.getBeginZ().equals("#")||t1.getBeginZ().equals("#")){
                        return 1;
                    }else {
                        // 按照首字母正常排序
                        return peoBean.getBeginZ().compareTo(t1.getBeginZ());

                    }
                }
            });

            // 创建联系人列表的适配器，并将排序后的联系人列表传入，然后设置给ListView
            PeoAdapter peoAdapter =new PeoAdapter(MainActivity.this, result);
            listView.setAdapter(peoAdapter);
        }
        // 添加  为添加联系人的浮动按钮添加点击事件监听器
        FloatingActionButton add = findViewById(R.id.add);
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 打开添加界面  创建意图，用于打开添加联系人的活动（AddActivity）
                Intent intent = new Intent(MainActivity.this, AddActivity.class);
                startActivity(intent);
            }
        });

        // 搜索
        EditText id = findViewById(R.id.search_id);
        id.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                listView.setAdapter(null);
                // 排序

                //获取搜索框中的文本内容
                String title = id.getText().toString();
                List<PeoBean> temp = null;
                // 如果搜索框为空，则获取所有联系人
                if (title.isEmpty()){
                    temp = PeoDao.getAllPeo();
                }else {
                    // 根据搜索框内容获取匹配的联系人
                    temp = PeoDao.getAllPeo(title);
                }
                // 对搜索结果按照姓名首字母（或特定规则）进行排序
                temp.sort(new Comparator<PeoBean>() {
                    @Override
                    public int compare(PeoBean peoBean, PeoBean t1) {
                        if(peoBean.getBeginZ().equals("#")||t1.getBeginZ().equals("#")){
                            return 1;
                        }else {
                            return peoBean.getBeginZ().compareTo(t1.getBeginZ());
                        }
                    }
                });
                // 创建搜索结果的适配器，并将排序后的搜索结果传入，然后设置给ListView
                PeoAdapter peoAdapter = new PeoAdapter(MainActivity.this, temp);
                listView.setAdapter(peoAdapter);
                return false;
            }
        });

        // 为搜索框添加文本改变事件监听器
        id.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                // 在文本改变之前调用，没有具体操作
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                // 在文本改变过程中调用，没有具体操作
            }

            @Override
            public void afterTextChanged(Editable editable) {
                listView.setAdapter(null);
                // 获取搜索框中的文本内容
                String title = id.getText().toString();
                List<PeoBean> temp = null;
                // 如果搜索框为空，则获取所有联系人
                if (title.isEmpty()){
                    temp = PeoDao.getAllPeo();
                }else {
                    // 根据搜索框内容获取匹配的联系人
                    temp = PeoDao.getAllPeo(title);
                }
                // 对搜索结果按照姓名首字母（或特定规则）进行排序
                temp.sort(new Comparator<PeoBean>() {
                    @Override
                    public int compare(PeoBean peoBean, PeoBean t1) {
                        if(peoBean.getBeginZ().equals("#")||t1.getBeginZ().equals("#")){
                            return 1;
                        }else {
                            return peoBean.getBeginZ().compareTo(t1.getBeginZ());
                        }
                    }
                });
                // 创建搜索结果的适配器，并将排序后的搜索结果传入，然后设置给ListView
                PeoAdapter peoAdapter = new PeoAdapter(MainActivity.this, temp);
                listView.setAdapter(peoAdapter);
            }
        });

    }
}